package queixa;

import pessoa.Pessoa;
import util.Excecoes;
import excecoes.SituacaoException;

public abstract class Queixa {

	// situacao das queixas do municipio
	public static final int OTIMO = 2;

	public static final int REGULAR = 1;

	public static final int RUIM = 0;

	// situacao da queixa
	public static final int ABERTA = 1;

	public static final int EM_ANDAMENTO = 2;

	public static final int FECHADA = 3;

	private int codigo;

	private String descricao;

	private Pessoa solicitante;

	private int situacao; // usa variaveis estaticas acima

	private String comentario = ""; // usado na atualizacao da queixa

	public void abrir() throws SituacaoException {
		if (this.situacao != Queixa.EM_ANDAMENTO)
			this.situacao = Queixa.ABERTA;
		else
			throw new SituacaoException(Excecoes.EXC_FALHA_SITUACAO);
	}

	public void fechar(String coment) throws SituacaoException {
		if (this.situacao == Queixa.EM_ANDAMENTO
				|| this.situacao == Queixa.ABERTA) {
			this.situacao = Queixa.FECHADA;
			this.comentario = coment;
		} else
			throw new SituacaoException(Excecoes.EXC_FALHA_SITUACAO);
	}

	public String getComentario() {
		return comentario;
	}

	public void setComentario(String comentario) {
		this.comentario = comentario;
	}

	public Queixa(String descricao, int situacao, String nome, String email,
			String rua, String uf, String cidade) {

		this.codigo = 0; // codigo zerado, serah gerado no repositorio
		this.descricao = descricao;
		this.solicitante = new Pessoa(nome, email, rua, uf, cidade);
		this.situacao = situacao;
	}

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public int getSituacao() {
		return situacao;
	}

	public void setSituacao(int situacao) {
		this.situacao = situacao;
	}

	public Pessoa getSolicitante() {
		return solicitante;
	}

	public void setSolicitante(Pessoa solicitante) {
		this.solicitante = solicitante;
	}

}
